package com.cty.service;

import com.cty.mapper.StudentMapper;
import com.cty.mapper.TeacherMapper;
import com.cty.pojo.Student;
import com.cty.pojo.Teacher;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @Auther: cty
 * @Date: 2020/3/1 22:44
 * @Description:  测试MyBatis注解
 * @version: 1.0
 */
public class TestAnnotation {
    public static void main(String[] args) throws IOException {
        // 获取日志对象
        Logger log = Logger.getLogger(TestAnnotation.class);
        // 获取配置文件流
        InputStream is = Resources.getResourceAsStream("mybatis.xml");
        // 创建SqlSession工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        // 生产SqlSession
        SqlSession session = factory.openSession();
        // 获取绑定接口实现类
        StudentMapper studentMapper = session.getMapper(StudentMapper.class);
        TeacherMapper teacherMapper = session.getMapper(TeacherMapper.class);

        // 执行方法
//        log.debug("1 MyBatis注解实现查询");
//        List<Student> stuList1 = studentMapper.selAll();
//        for(Student stu: stuList1){
//            log.debug(stu);
//        }
//        log.debug("********************************************************");

//        log.debug("2 MyBatis注解实现新增");
//        Student s2 = new Student();
//        s2.setSno("00006");
//        s2.setSname("周八");
//        s2.setTno("00002");
//        int index2 = studentMapper.insStudent(s2);
//        if(index2 > 0){
//            log.debug("新增成功");
//        }else {
//            log.debug("新增失败");
//        }
//        log.debug("********************************************************");

//        log.debug("3 MyBatis注解实现修改");
//        Student s3 = new Student();
//        s3.setSno("00006");
//        s3.setTno("00001");
//        int index3 = studentMapper.updStudent(s3);
//        if(index3 > 0){
//            log.debug("修改成功");
//        }else {
//            log.debug("修改失败");
//        }
//        log.debug("********************************************************");

//        log.debug("4 MyBatis注解实现删除");
//        Student s4 = new Student();
//        s4.setSno("00006");
//        int index4 = studentMapper.delStudent(s4);
//        if(index4 > 0){
//            log.debug("删除成功");
//        }else {
//            log.debug("删除失败");
//        }
//        log.debug("********************************************************");

//        log.debug("5 MyBatis注解实现<resultMap>功能：关联单个对象（N+1方式）");
//        List<Student> stuList = studentMapper.selStudent();
//        for(Student stu: stuList){
//            log.debug(stu);
//        }
//        log.debug("********************************************************");

//        log.debug("7 MyBatis注解实现<resultMap>功能：关联集合对象（N+1方式）");
//        List<Teacher> TeaList = teacherMapper.selTeacher();
//        for(Teacher tea: TeaList){
//            log.debug(tea);
//        }
//        log.debug("********************************************************");

//        log.debug("9 创建数据表");
//        int index9 = studentMapper.createTable();
//        log.debug(index9);  // 返回值为0
//        log.debug("********************************************************");

//        log.debug("10 修改数据表");
//        int index10 = studentMapper.alterTable();
//        log.debug(index10);  // 返回值为0
//        log.debug("********************************************************");

        log.debug("11 删除数据表");
        int index11 = studentMapper.dropTable();
        log.debug(index11);  // 返回值为0
        log.debug("********************************************************");

        // 提交事务
        session.commit();
        // 关闭session
        session.close();
    }
}
